home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
CD-ROM Tools
/
MCDPlayer
/
Source
/
Windows.c
< prev
Wrap
C/C++ Source or Header
|
1996-09-26
|
7KB
|
254 lines
#include "mcdplayer.h"
#include "mcdplayer_gui.h"
struct Gadget *MainGadget[31];
WORD gad_x[] = { 267, 288, 309, 330, 351, 267, 288, 309, 330, 351, 267, 288, 309, 330, 351,
267, 288, 309, 330, 351, 267, 302, 336, 7, 52, 77, 102, 137, 172, 207,
242 };
WORD gad_y[] = { 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 30, 30, 30, 30, 30,
42, 42, 42, 42, 42, 53, 53, 53, 65, 65, 65, 65, 65, 65, 65,
65 };
WORD gad_w[] = { 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 34, 33, 34, 44, 24, 24, 34, 34, 34, 34,
23 };
WORD gad_h[] = { 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 11, 11, 11, 13, 13, 13, 13, 13, 13, 13,
13 };
UWORD offy = 0;
struct TagItem MainWindowTags[] = {
WA_Left, 0,
WA_Top, 0,
WA_Width, 390,
WA_Height, 0,
WA_IDCMP, IDCMP_GADGETUP|IDCMP_REFRESHWINDOW|IDCMP_CLOSEWINDOW,
WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
WA_Gadgets, 0l,
WA_Title, "MCDPlayer V" VERSION,
WA_ScreenTitle, 0l,
WA_PubScreen, NULL,
TAG_DONE };
struct Image MainImage = {
0,0,382,84,2,
NULL,
0x3,0x0,NULL
};
struct Image PfeilImage = {
0,0,9,5,2,
NULL,
0x3,0x0,NULL
};
struct Image PauseImage = {
0,0,9,5,2,
NULL,
0x3,0x0,NULL
};
struct Image PrgmImage = {
0,0,21,5,2,
NULL,
0x3,0x0,NULL
};
char FontName[130];
struct TextAttr DispFont = {
&FontName[0], 10, 0x00, 0x01 };
struct Window *MainWnd = NULL;
struct TextFont *DFont = NULL;
UWORD *MW_Data;
struct EasyStruct ErrorES = {
sizeof (struct EasyStruct),
0,
0l,
"%s",
0l,
};
void PlaceWnd( struct Screen *Scr, WORD WndWidth, WORD WndHeight, WORD *x_pos, WORD *y_pos, char Place )
{
ULONG ModeID;
struct Rectangle OSRect;
WORD ScrWidth = 0, ScrHeight = 0;
if (INVALID_ID != (ModeID = GetVPModeID(&(Scr->ViewPort) ) ) )
{
if (QueryOverscan (ModeID, &OSRect, OSCAN_TEXT) )
{
ScrWidth = OSRect.MaxX - OSRect.MinX + 1;
ScrHeight = OSRect.MaxY - OSRect.MinY + 1;
};
};
switch (Place)
{
case 0:
*x_pos = (ScrWidth/2 - WndWidth/2) - Scr->LeftEdge;
*y_pos = (ScrHeight/2 - WndHeight/2) - Scr->TopEdge;
break;
case 1:
*x_pos = Scr->Width - WndWidth;
*y_pos = Scr->BarHeight + 1;
break;
case 2:
*x_pos = 0;
*y_pos = Scr->BarHeight + 1;
break;
case 3:
*x_pos = 0;
*y_pos = Scr->Height - WndHeight;
break;
case 4:
*x_pos = Scr->Width - WndWidth;
*y_pos = Scr->Height - WndHeight;
break;
}
}
void DrawPlaySymb( int stat )
{
switch( stat )
{
case 1:
if (MW_Data) DrawImage( MainWnd->RPort,&PfeilImage, 248, 65+offy );
break;
case 0:
SetAPen( MainWnd->RPort, 1 );
RectFill( MainWnd->RPort, 248, 65+offy, 262, 70+offy );
break;
default:
if (MW_Data) DrawImage( MainWnd->RPort,&PauseImage, 248, 65+offy );
break;
}
}
void DrawPrgmSymb( int stat )
{
if (stat)
{
if (MW_Data) DrawImage( MainWnd->RPort,&PrgmImage, 218, 65+offy );
}
else
{
SetAPen( MainWnd->RPort, 1 );
RectFill( MainWnd->RPort, 218, 65+offy, 240, 70+offy );
}
}
ErrorMsg(char *Msg)
{
ErrorES.es_Title = "MCDP Fehlermeldung:";
ErrorES.es_GadgetFormat = "Oje";
EasyRequest( MainWnd, &ErrorES, 0, Msg );
}
void CleanMainWnd()
{
if (MW_Data) DrawImage( MainWnd->RPort,&MainImage, 5, 12+offy );
}
int OpenMainWnd( char Place )
{
struct Screen *Scr;
UWORD i;
WORD x, y;
int Exit = 0;
if (Scr = LockPubScreen( 0 ))
{
offy = Scr->WBorTop + Scr->RastPort.TxHeight - 10;
MainWindowTags[ 9 ].ti_Data = Scr;
PlaceWnd( Scr, 390, 98+offy, &x, &y, Place );
MainWindowTags[ 0 ].ti_Data = x;
MainWindowTags[ 1 ].ti_Data = y;
MainWindowTags[ 3 ].ti_Data = 98+offy;
if ( MW_Data = (UWORD *)AllocMem( 8148, MEMF_CHIP ) )
{
memcpy( MW_Data, MainWinData, 8064 );
memcpy( ((char *)MW_Data)+8064, PfeilData, 20 );
memcpy( ((char *)MW_Data)+8084, PauseData, 20 );
memcpy( ((char *)MW_Data)+8108, PrgmData, 40 );
PfeilImage.ImageData = ((char *)MW_Data)+8064;
PauseImage.ImageData = ((char *)MW_Data)+8084;
PrgmImage.ImageData = ((char *)MW_Data)+8108;
if ( MainWnd = OpenWindowTagList( 0l, MainWindowTags ))
{
MainImage.ImageData = MW_Data;
DrawImage( MainWnd->RPort,&MainImage, 5, 12+offy );
for (i=0; i<31; i++)
{
if (MainGadget[i] = (struct Gadget *)AllocMem( sizeof( struct Gadget ), MEMF_CLEAR ))
{
MainGadget[i]->LeftEdge = gad_x[i]+5;
MainGadget[i]->TopEdge = gad_y[i]+12+offy;
MainGadget[i]->Width = gad_w[i];
MainGadget[i]->Height = gad_h[i];
MainGadget[i]->Flags = GFLG_GADGHCOMP;
MainGadget[i]->Activation = GACT_RELVERIFY;
MainGadget[i]->GadgetType = GTYP_BOOLGADGET;
MainGadget[i]->GadgetID = i;
AddGadget( MainWnd, MainGadget[i], ~0 );
}
else
{
ErrorMsg( "Fehler bei Erzeugung der Gadgets!" );
Exit = 5;
}
};
if (DFont = (struct TextFont *)OpenDiskFont( &DispFont ))
{
SetFont( MainWnd->RPort, DFont );
}
else
{
ErrorMsg( "Kann Zeichensatz nicht öffnen!" );
Exit = 4;
}
}
else
{
ErrorMsg( "Kann Fenster nicht öffnen!" );
Exit = 1;
}
}
else
{
ErrorMsg( "Speicheranforderung fehlgeschlagen!" );
Exit = 2;
}
UnlockPubScreen( NULL, Scr );
}
else
{
ErrorMsg( "Kann Screen nicht öffnen!" );
Exit = 3;
}
return ( Exit );
}
CloseMainWnd()
{
UWORD i;
if (MW_Data) FreeMem( MW_Data, 8128 );
if (MainWnd) CloseWindow( MainWnd );
for (i=0; i<31; i++)
if (MainGadget[i]) FreeMem( MainGadget[i], sizeof( struct Gadget ) );
if (DFont) CloseFont( DFont );
}